def SHARP_pcuiInit(sky_comDriver):
    '''
    初始化通讯

    * 参数 
        * *driver:驱动结构体指针

    * 返回 
        * >=0:初始化成功
        * -1:初始化失败

    * raise  :   无              
    '''

def SHARP_pcui_getCmd():
    '''
    读取对应指令数据

    * 参数 
        * *str:返回对应指令数据(字符串)

    * 返回
        * >=0:返回对应指令数据(字符串)成功
        * -1:接收超时
        * -2:接收指令错误

    * raise  :   无               
    '''

def SHARP_pcuiDetection():
    ''' √
    检测通讯是否在线

    * 参数 : 无

    * 返回 
        * >=0:通讯在线
        * -1:通讯不在线

    * raise  :   无               
    '''

def SHARP_pcui_printf(fmt):
    '''√
    打印内容到第二页右边的文本框,相当于printf函数

    * 参数 : 
        * *fmt:内容格式(字符串格式)

    * 返回 
        * >=0:打印成功
        * <0:打印失败

    * 示  例 ：pcui_printf('hello word')

    * raise  :   无     
    '''

def SHARP_pcui_clearPrintf():
    '''√
    清空第二页右边文本框打印的内容

    * 参数 : 无

    * 返回 
        * >=0:清空成功
        * <0:清空失败

    * raise  :   无                
    '''

def SHARP_selectShowPage(page):
    '''√
    选择显示某页界面

    * 参数 : 无

    * 返回 
        * >=0:显示成功
        * <0:显示失败

    * 示  例 ：selectShowPage(1)

    * raise  :   无   
    '''

def SHARP_creatButton(name,page):
    '''√
    创建按键(在界面上指定的页面动态创建一个按键,创建过多可能会显示不全)

    * 参数 
        * *name:按键的名称(字符串格式,过多字符可能会显示不全,可创建中文按键)
        * page:页面(0~1)(从0(首页)开始,1为第一页)

    * 返回 
        * >=0:创建成功
        * <0:创建失败

    * 示  例 ：

    * raise  :   无 
    '''

def SHARP_creatButtonPage4(name,x,y,height,width,size):
    '''√
    创建按键(在界面上的第4页动态创建一个按键,创建过多可能会显示不全)

    * 参数 
        * *name:按键的名称(字符串格式,过多字符可能会显示不全,可创建中文按键)
        * x:起始横坐标
        * y:起始纵坐标
        * height:按键的高度
        * width:按键的宽度
        * size:按键的字体大小

    * 返  回 
        * >=0:创建成功
        * <0:创建失败

    * 示  例 ：creatButtonPage4("按键btn4",100,100,100,200,24)

    * raise  :   无 
    '''

def SHARP_setButton_backColor(name,color):
    '''√
    设置已创建的按键背景颜色(第四页的按键无法设置)

    * 参数 
        * *name:要设置的按键名称(字符串格式)
        * color:按键的背景颜色(pcui.h里有常用颜色,或等于 NOT 宏定义(表示不设置标签的背景颜色))

    * 返  回
        * >=0:创建成功
        * <0:创建失败

    * 示  例 ：setButton_backColor("按键btn1",0x00FF00)

    * raise  :   无
    '''

def SHARP_getButton_backColor(name):
    '''√
    获取已创建的按键背景颜色

    * 参数 
        * *name:要获取的按键名称(字符串格式)

    * 返回 
        * 返回按键的背景颜色(返回格式:0xXXXXXX)
        * <0:获取失败

    * 示  例 ：getButton_backColor("按键btn1")

    * raise  :   无
    '''

def SHARP_setLabel_Parameter(name,content,color):
    '''√
    设置标签参数(在界面上的首页动态创建一个标签,并设置标签的字体颜色和内容,若标签名相同,则只设置标签的字体颜色或标签内容)

    * 参数 
        * *name:标签名(字符串格式,过多字符可能会显示不全,可中文标签名)
        * *content:标签名的内容(字符串格式,或等于 0 或 NULL(表示不设置标签名的内容),过多字符可能会显示不全)
        * color:标签名的字体颜色(pcui.h里有常用颜色,或等于 NOT 宏定义(表示不设置标签的字体颜色))

    * 返  回 
        * >=0:设置成功
        * <0:设置失败

    * 示例 ：setLabel_Parameter("标签名lab1","lab1_test",0x00ff00)

    * raise  :   无
    '''

def SHARP_setLineEdit_Parameter(name,content):
    '''√
    设置单行编辑框参数(在界面上的首页动态创建一个单行编辑框)

    * 参数 
        * *name:单行编辑框左边的标签名(字符串格式,过多字符可能会显示不全,可中文标签名)
        * *content:编辑框里的内容(字符串格式,或等于 0(表示没有内容),过多字符可能会显示不全,可中文内容)

    * 返回 
        * >=0:设置成功
        * <0:设置失败

    * 示例 ：setLineEdit_Parameter("编辑框lineEdit:","lineEdit_Test")

    * raise  :   无
    '''

def SHARP_setLineEdit_ParameterPage4(x1,y1,width,size,bgcolor,type,name,content):
    '''√
    设置单行编辑框参数(在界面上的第4页上某一位置动态创建一个单行编辑框)

    * 参数 
        * x1:起点横坐标(以像素为单位)
        * y1:起点纵坐标(以像素为单位)
        * width:单行编辑框的宽度(以像素为单位)
        * size:单行编辑框左边标签名的字体大小
        * bgcolor:单行编辑框的背景颜色
        * type:单行编辑框类型(0:编辑框里面的内容不可以修改,1:编辑框里面的内容可以修改)
        * *name:单行编辑框左边的标签名(字符串格式,过多字符可能会显示不全,可中文标签名)
        * *content:编辑框里的内容(字符串格式,或等于 0(表示没有内容),过多字符可能会显示不全,可中文内容)

    * 返回 
        * >=0:设置成功
        * <0:设置失败

    * 示例 ：setLineEdit_ParameterPage4(100,0,100,20,0xffff00,0,"第四页编辑框LineEdge1","LineEdge1_t")

    * raise  :   无
    '''

def SHARP_getLineEdit_Content(name,content):
    '''√ (钰仪上位机可用 伙琨上位机不可用)
     获取单行编辑框内容(获取界面上的首页已设置的单行编辑框内容)

    * 参数 
        * *name:要获取的单行编辑框左边的标签名(字符串格式,过多字符可能会显示不全,可中文标签名)
        * *content:存放获取到编辑框里的内容(字符串格式,可中文内容)

    * 返回 
        * >=0:获取成功 
        * <0:获取失败 

    * 示例 ：GetKeyVal="\0"*50 申请内存
            ret= getLineEdit_Content("lineEdit:",GetKeyVal)

    * raise  :   无        
    '''

def SHARP_getLineEdit_ContentPage4(name,content):
    '''√
    获取单行编辑框内容(获取界面上的第4页已设置的单行编辑框内容)

    * 参数 
        * *name:要获取的单行编辑框左边的标签名(字符串格式,过多字符可能会显示不全,可中文标签名)
        * *content:存放获取到编辑框里的内容(字符串格式,可中文内容)

    * 返回 
        * ret_val >=0:获取成功 <0:获取失败 

    * 示例 ：GetKeyVal="\0"*50 申请内存
            ret= getLineEdit_ContentPage4("第四页编辑框LineEdge1",GetKeyVal)

    * raise  :   无            
    '''

def SHARP_setDialog(content,type):
    '''√
    设置对话框(在界面上弹出一个对话框)

    * 参数 
        * *content:对话框的内容(字符串格式,可中文内容)
        * type:对话框类型(0:不带编辑框,1:带编辑框)

    * 返回 : >=0:设置成功
                <0:设置失败

    * 示例 ： setDialog('Connection successful',0)

    * raise  :   无    
    '''

def SHARP_creatTable(row,column):
    '''√
    创建表格(在界面上的第三页创建一个表格)

    * 参数 
        * row:表格的行数
        * column:表格的列数

    * 返回  
        * >=0:创建成功
        * <0:创建失败

    * 示例 ：creatTable(3,4)

    * raise  :   无   
    '''

def SHARP_setRowTableName(name,nameLen,height,bgcolor):
    '''√ (钰仪上位机可用 伙琨上位机 表格名背景颜色设置不可用)
    设置行表格名(在界面上的第三页已有表格设置行表格名)

    * 参数 
        * name:行表格名 (列表形式传回 ,最多支持256个数据)
        * nameLen:行表格名的个数
        * height:行表格名的高度(以像素为单位,为0则使用系统默认的像素长度)
        * bgcolor:行表格名的背景颜色(pcui.h里有常用颜色,或等于 NOT 宏定义(表示使用默认的背景颜色))

    * 返回 
        * >=0:设置成功
        * <0:设置失败

    * 示例 ：RowTab = ["廖RowTab1","毅RowTab2","森RowTab3"]
                setRowTableName(RowTab,len(RowTab),50,0x00ffff)

    * raise  :   无              
    '''

def SHARP_setColumnTableName(name,nameLen,breadth,bgcolor):
    '''√ (钰仪上位机可用 伙琨上位机 表格名背景颜色设置不可用)
    设置列表格名(在界面上的第三页已有表格设置列表格名)

    * 参数 
        * name:列表格名(列表形式传回 ,最多支持256个数据)
        * nameLen:列表格名的个数
        * breadth:列表格名的宽度(以像素为单位,为0则使用系统默认的像素宽度)
        * bgcolor:列表格名的背景颜色(pcui.h里有常用颜色,或等于 NOT 宏定义(表示使用默认的背景颜色))

    * 返回 
        * >=0:设置成功
        * <0:设置失败

    * 示  例 ：RowTab = ["廖ColumnTab1","毅ColumnTab2","森ColumnTab3"]
                setColumnTableName(RowTab,len(RowTab),150,0x00ffff)
                
    * raise  :   无              
    '''

def SHARP_setTableContent(row,column,content,color,width,height,text_size):
    '''√
    设置表格内容(在界面上的第三页已有表格上设置对应第n行和第n列的内容)

    * 参数  
        * row:表格的行数
        * column:表格的列数
        * *content:对应第row行和第column列的内容 (可中文)
        * color:对应第row行和第column列的背景颜色
        * width:列表格内容的宽度(以像素为单位,为0则使用系统默认的像素宽度)
        * height:行表格内容的高度(以像素为单位,为0则使用系统默认的像素长度)
        * text_size:字体大小

    * 返回 
        * >=0:设置成功
        * <0:设置失败

    * 示例 ：setTableContent(0,0,"森text1",0x00ffff,50,80,54)

    * raise  :   无   
    '''

def SHARP_creatColorBlock(x1,y1,x2,y2,color):
    '''√
    在界面上的第四页上创建一个色块

    * 参数 
        * x1:起点横坐标(以像素为单位)
        * y1:起点纵坐标(以像素为单位)
        * x2:终点横坐标(以像素为单位)
        * y2:终点纵坐标(以像素为单位)
        * color:色块的背景颜色

    * 返回 
        * >=0:设置成功
        * <0:设置失败

    * 示例 ： creatColorBlock(100,150,150,200,0x00ffff)

    * raise  :   无 
    '''

def SHARP_setBlockContent(x1,y1,x2,y2,color,size,content):
    ''' √ (钰仪上位机可用 伙琨上位机不可用)
    在界面上的第四页上设置内容

    * 参数 
        * x1:起点横坐标(以像素为单位)
        * y1:起点纵坐标(以像素为单位)
        * x2:终点横坐标(以像素为单位)
        * y2:终点纵坐标(以像素为单位)
        * color:内容的字体颜色
        * size:内容的字体大小
        * *content:色块里的内容(字符串格式)

    * 返回 
        * >=0:设置成功
        * <0:设置失败

    * 示  例 setBlockContent(200,200,300,300,0x00ffff,24,"setBlockContent")

    * raise  :   无 
    '''

def SHARP_setBlockContentPage4(x1,y1,x2,y2,color,bgcolor,size,content):
    ''' √
    在界面上的第四页上设置内容(带背景颜色)

    * 参数 
        * x1:起点横坐标(以像素为单位)
        * y1:起点纵坐标(以像素为单位)
        * x2:终点横坐标(以像素为单位)
        * y2:终点纵坐标(以像素为单位)
        * color:内容的字体颜色
        * size:内容的字体大小
        * *content:色块里的内容(字符串格式)

    * 返回 
        * >=0:设置成功
        * <0:设置失败

    * 示  例 ：setBlockContentPage4(200,200,300,300,0x00ffff,0xffff00,24,"setBlockContentPage4")


    '''

def SHARP_createEwm(name):
    '''不可用 上位机不实现
    在首页创建一个扫码框

    * 参数 
        * *name:扫码框的名字

    * 返回
        * >=0:创建成功
        * <0:创建失败

    * 示例 ：

    * raise  :   无
    '''

def SHARP_createEwmPage4(name,x,y,height,width,size):
    '''√
    在第4页创建一个扫码框

    * 参数 : 
        * *name:扫码框的名字

    * 返回 
        * >=0:创建成功
        * <0:创建失败

    * 示例 ：createEwmPage4("扫码框Ewm",200,200,300,300,24)

    * raise  :   无
    '''

def SHARP_createEspBox(x1,y1,x2,y2):
    '''
    在第4页上的某个位置创建方框

    * 参数 
        * x1:起点横坐标(以像素为单位)
        * y1:起点纵坐标(以像素为单位)
        * x2:长(以像素为单位)
        * y2:宽(以像素为单位)

    * 返回 
        * >=0:创建成功
        * <0:创建失败

    * 示例 ：

    * raise  :   无

    '''

def SHARP_addComboBox(x1,y1,x2,y2,size,identify,content):
    '''
    在第4页上的某个位置添加下拉框内容

    * 参数 
        * x1:起点横坐标(以像素为单位)
        * y1:起点纵坐标(以像素为单位)
        * x2:终点横坐标(以像素为单位)
        * y2:终点纵坐标(以像素为单位)
        * size:字体大小
        * *identify:某组下拉框的标识名
        * *content:下拉框内容

    * 返回 
        * >=0:添加成功
        * <0:添加失败

    * 示  例 ：

    * raise  :   无
    '''

def SHARP_getComboBox(identify,content):
    '''√(钰仪上位机可用 伙琨上位机不可用)
    根据某组下拉框标识名获取选中的内容

    * 参数 
        * *identify:某组下拉框的标识名
        * *content:获取到的下拉框内容

    * 返回 
        * >=0:获取成功 
        * <0:获取失败 

    * 示例 ：GetKeyVal="\0"*50  #申请内存
            ret = getComboBox("下拉框ComboBox",GetKeyVal)
            if 'ComboBox_text1' in GetKeyVal:
                print('OK')

    * raise  :   无
    '''

def SHARP_clearComboBox(identify):
    '''√(钰仪上位机可用 伙琨上位机不可用)
    根据某组下拉框标识名清除所有内容

    * 参数 
        * *identify:某组下拉框的标识名

    * 返回 
        * >=0:清除成功
        * <0:清除失败

    * 示例 ：clearComboBox("下拉框ComboBox")

    * raise  :   无
    '''

def SHARP_clearFourPage():
    '''√
    清除在界面上第四页里的所有色块和内容

    * 参数 : 无

    * 返回 
        * >=0:清除成功
        * <0:清除失败

    * 示例 ：

    * raise  :   无
    '''

def SHARP_clearWidget():
    '''√
    清除界面上的所有控件

    * 参数 : 无

    * 返回 
        * >=0:清除成功
        * <0:清除失败

    * 示例 ：

    * raise  :   无
    '''

def SHARP_locationEwmCursor(name):
    '''√
    定位在第4页的扫码框光标

    * 参数 
        * *name:扫码框的名字

    * 返回 
        * >=0:定位成功
        * <0:定位失败

    * 示例 ：locationEwmCursor("扫码框Ewm")

    * raise  :   无
    '''

def SHARP_pcui_setKeyValue(key,value):
    '''√
    设置键值对

    * 参数 
        * *key:要设置的键(字符串格式)
        * *value:要设置的值(字符串格式)

    * 返回 
        * >=0:设置成功
        * <0:设置失败

    * 示例 ：pcui_setKeyValue("SendWebServices.Resultdata","key_val1")

    * raise  :   无
    '''

def SHARP_pcui_appendKeyValue(key,value):
    '''√
    追加键值对

    * 参数 
        * *key:要追加的键(字符串格式)
        * *value:获追加的值(字符串格式)

    * 返回
        * >=0:追加成功
        * <0:追加失败

    * 示例 ：pcui_appendKeyValue("SendWebServices.Resultdata","key_val2")

    * raise  :   无
    '''

def SHARP_pcui_getKeyValue(key,value):
    '''√
    获取键值对

    * 参数 
        * *key:要获取的键(字符串格式)
        * *value:获取到的值(字符串格式)

    * 返回 
        * >=0:获取成功
        * <0:获取失败

    * 示例 ：GetKeyVal="\0"*50  #申请缓冲区
                pcui_getKeyValue("SendWebServices.Resultdata",GetKeyVal)
                if "key_val1" in GetKeyVal:
    #               print('ok')

    * raise  :   无
    '''

def SHARP_pcui_readKeyValueData(key,offset,size,data):
    '''√
    读取键值对里的某一段数据

    * 参数 
        * *key:要获取的键(字符串格式)
        * offset:数据内容偏移
        * size:要读取的数据大小
        * *data:读取到的数据

    * 返回 
        * 读取到的数据大小
        * <0:读取失败

    * 示  例 ：readKeyValue="\0"*50
                pcui_readKeyValueData("SendWebServices.Resultdata",1,4,readKeyValue)

    * raise  :   无
    '''

def SHARP_pcui_readKeyValueLine(key,line,data):
    '''√
    读取键值对里的某一行数据

    * 参数 
        * *key:要获取的键(字符串格式)
        * line:第line行
        * *data:读取到的某一行数据

    * 返回 
        * 读取到的数据大小
        * <0:读取失败

    * 示例 ：readKeyLine="\0"*50
            pcui_readKeyValueLine("SendWebServices.Resultdata",0,readKeyLine)

    * raise  :   无
    '''

def SHARP_pcui_saveKeyValue():
    '''√
    保存已经设置的键值对

    * 参数 : 无

    * 返回 
        * >=0:保存成功
        * <0:保存失败

    * 示  例 ：

    * raise  :   无
    '''

def SHARP_pcui_clearKeyValue():
    '''√(钰仪上位机可用 伙琨上位机不可用)
    清除键值对

    * 参数 : 无

    * 返回 
        * >=0:清除成功
        * <0:清除失败

    * 示例 ：

    * raise  :   无    
    '''

def SHARP_pcui_writeFileHead(filename,fmt):
    '''√
    写文件头

    * 参数 
        * *filename:文件名(字符串格式)
        * *fmt:文件内容(字符串格式)

    * 返回 
        * >=0:写成功
        * <0:写失败

    * 示  例 ：pcui_writeFileHead("file_test.txt","write_test")

    * raise  :   无
    '''

def SHARP_pcui_writeFileContent(filename,fmt):
    '''√
    写文件内容

    * 参数  
        * *filename:文件名(字符串格式)
        * *fmt:文件内容(字符串格式)

    * 返回 
        * >=0:写成功
        * <0:写失败

    * 示  例 ：pcui_writeFileContent("file_test.txt","write_1-2-3-4")

    * raise  :   无
    '''

def SHARP_pcui_writeMultiContent(filename,fmt):
    '''√
    写文件内容并打印到文本框

    * 参数 
        * *filename:文件名(字符串格式)
        * *content:文件内容

    * 返回 
        * >=0:写成功
        * <0:写失败

    * 示例 ：pcui_writeMultiContent("file_test.txt","test123456")

    * raise  :   无
    '''

def SHARP_loadFile(path):
    '''√
     加载某一路径下的文件

    * 参数 
        * *path:路径(字符串格式)

    * 返回 
        * >=0:加载成功
        * <0:加载失败

    * 示例 ：loadFile("D:/Program Files/BySerial-通用版/bin/Debug/Log/fileTest.txt")

    * raise  :   无
    '''

def SHARP_pcui_getDate(format,dateTime):
    '''√
    获取日期时间

    * 参数 
        * *format:日期时间格式(字符串格式)
        * *dateTime:获取到的日期时间(字符串格式)

    * 返回 
        * >=0:获取成功
        * <0:获取失败

    * 示例 ：GetTime="yyyy-MM-dd:hh:mm:ss"
                getDate="\0"*50
                ret = pcui_getDate(GetTime,getDate)
                print(getDate)

    * raise  :   无
    '''

def SHARP_pcui_Run_bat(filepath,filename):
    '''√钰仪上位机不可用 伙琨上位机能用但是会报错
    运行bat文件

    * 参数 
        * *filepath:文件路径(字符串格式)
        * *filename:文件名(字符串格式)

    * 返回 
        * >=0:写成功
        * <0:写失败

    * 示  例 ：pcui_Run_bat("D:\\test",'test.bat')

    * raise  :   无
    '''

def SHARP_pcui_wPathFileDateContent(filepath,filename,fmt):
    '''√ 钰仪上位机不能用  伙琨上位机写内容不带日期和换行
    带路径写文件内容(带日期和换行)  

    * 参数 
        * *filepath:文件路径(字符串格式)
        * *filename:文件名(字符串格式)
        * *fmt:文件内容(带日期格式和换行,字符串格式)

    * 返回 
        * >=0:写成功
        * <0:写失败

    * 示例 ：pcui_wPathFileDateContent('C:\\Users\\simonlaw\\Desktop',"fileTest.txt","test")

    * raise  :   无
    '''

def SHARP_readFile(data,offset,size):
    '''√
    读取加载路径下的文件内容

    * 参数 
        * *data:读取到的数据
        * offset:数据内容偏移
        * size:要读取的数据大小

    * 返回 
        * 读取到的数据大小
        * -1:读取失败

    * 示  例 ：ReadDate="\0"*10
                readFile(ReadDate,0,len(ReadDate))

    * raise  :   无
    '''

def SHARP_pcui_copyMoveFile(source_path,goal_path):
    '''√
    拷贝并移动某个路径下的文件

    * 参数 
        * *source_path:要移动的文件名路径(示例: "C:\\Users\\lxb\\Desktop\\PCUI\\PCUI_Test.txt")
        * *goal_path:移动到的目标文件夹路径(示例: "C:\\Users\\lxb\\Desktop\\PCUI_Test.txt")

    * 返回 
        * >=0:拷贝并移动成功
        * <0:拷贝并移动失败

    * 示例 ：pcui_copyMoveFile('C:\\Users\\simonlaw\\Desktop\\fileTest.txt','C:\\Users\\simonlaw\\Desktop\\test\\fileTest.txt')

    * raise  :   无
    '''

def SHARP_pcui_modifyFileName(source_path,goal_path):
    '''√
    修改某个路径下文件的文件名

    * 参数 
        * *source_path:要修改的文件名路径(示例: "C:\\Users\\lxb\\Desktop\\PCUI\\PCUI_Test.txt")
        * *goal_name:要修改的名字(示例: "Test_PCUI.txt")

    * 返回 
        * >=0:修改成功
        * <0:修改失败

    * 示  例 ：pcui_modifyFileName('C:\\Users\\simonlaw\\Desktop\\test\\fileTest.txt',"goalFile.txt")

    * raise  :   无
    '''

def SHARP_pcui_deleteFile(file_path_name):
    '''√
    删除某个路径下的文件

    * 参数 
        * *file_path_name:要删除的文件路径名(示例: "C:\\Users\\lxb\\Desktop\\PCUI\\PCUI_Test.txt")

    * 返回
        * >=0:删除成功
        * <0:删除失败

    * 示例 ：pcui_deleteFile('C:\\Users\\simonlaw\\Desktop\\test\\goalFile.txt')

    * raise  :   无
    '''

def SHARP_pcui_getFileName(order,folder_path,file_name):
    '''√
    根据修改日期先后顺序(近期的日期时间)获取某个路径下的文件名

    * 参数 
        * order:0~无穷大(0表示离windows系统时间最近一次修改日期文件的文件名,1表示离windows系统时间次近修改日期文件的文件名,以此类推)
        * *folder_path:要获取的文件夹路径(示例: "C:\\Users\\lxb\\Desktop\\PCUI", 传入数组)
        * *file_name:获取到的文件名(示例: "PCUI_Test.txt", 传入数组)

    * 返回 
        * >=0:获取成功,返回文件名个数
        * <0:获取失败

    * 示例 ：pcui_getFileName(0,"C:\\Users\\simonlaw\\Desktop\\test",getFileName)

    * raise  :   无
    '''

def SHARP_pcui_useExcelRead(file_path_name,sheet_name,xy,excel_content):
    '''不可用
    读取xls,xlsx,xlsm文件对应坐标的内容

    * 参数
        * *file_path_name:文件路径名(示例: "C:\\Users\\lxb\\Desktop\\PCUI\\WPC_7.xlsm" 或者 "./WPC_7.xlsm")
        * *sheet_name:工作表名字
        * *xy:行列坐标(字符串格式, 传入 "A1" - ... 或者 "A1,A2" - ...)
        * *excel_content:读取到的对应坐标内容(字符串格式,传入数组)

    * 返回 
        * >=0:读取成功
        * <0:读取失败

    * 示  例 ：getFileName="\0"*50 # 申请空间
                pcui_useExcelRead("C:\\Users\\simonlaw\\Desktop\\test\\test.xlsx","Sheet1","B2",getFileName)

    * raise  :   无
    '''

def SHARP_pcui_useExcelWrite(file_path_name,sheet_name,excel_content):
    '''不可用
    写入对应坐标(xx,xx)xls,xlsx,xlsm文件的内容

    * 参数 
        * *file_path_name:文件路径名(示例: "C:\\Users\\lxb\\Desktop\\PCUI\\WPC_7.xlsm" 或者 "./WPC_7.xlsm")
        * *sheet_name:工作表名字
        * *excel_content:写入对应坐标内容(字符串格式,传入字符串数组内容"A1=1,A2=2,A3=3")

    * 返回 
        * >=0:写入成功
        * <0:写入失败

    * 示例 ：pcui_useExcelWrite("C:\\Users\\simonlaw\\Desktop\\test\\test.xlsx","Sheet1",'B3 = getFileName')

    * raise  :   无
    '''

def SHARP_pcui_useExcelVBA(file_path_name,macro):
    '''不可用
    调用xls,xlsx,xlsm文件内容里对应VBA宏

    * 参数 
        * *file_path_name:文件路径名(示例: "C:\\Users\\lxb\\Desktop\\PCUI\\WPC_7.xlsm" 或者 "./WPC_7.xlsm")
        * *macro:要调用的宏指令(字符串格式,传入字符串数组内容,示例: "WPC")

    * 返回
        * >=0:调用成功
        * <0:调用失败

    * 示  例 ：

    * raise  :   无
    '''

def SHARP_pcui_useExcelOpen(file_path_name):
    '''不可用
    打开某个xls,xlsx,xlsm文件

    * 参数 
        * *file_path_name:文件路径名(示例: "C:\\Users\\lxb\\Desktop\\PCUI\\WPC_7.xlsm" 或者 "./WPC_7.xlsm")

    * 返回 
        * >=0:打开成功
        * <0:打开失败

    * 示例 :

    * raise  :   无
    '''

def SHARP_pcui_useExcelClose():
    '''不可用
    关闭某个xls,xlsx,xlsm文件,调用之前需要确定之前有调用 pcui_useExcelOpen 函数

    * 参数 : 无

    * 返回 
        * >=0:关闭成功
        * <0:关闭失败

    * 示例 ：

    * raise  :   无
    '''

def SHARP_pcui_createTableWidget(row,column,flag):
    '''√
    创建表格(在界面上的第三页创建一个表格,带是否不拖动功能)

    * 参数 
        * row:表格的行数
        * column:表格的列数
        * flag:是否不拖动表格的长宽(flag = 0:不拖动,flag = 1:拖动)

    * 返回 
        * >=0:创建成功
        * <0:创建失败

    * 示例 ：pcui_createTableWidget(4,5,1)

    * raise  :   无
    '''

def SHARP_pcui_setEncoding(format):
    '''√
    设置通用从机接收指令的编码格式

    * 参数 
        * *format:UTF7 UTF8 UTF32 ASCII Unicode BigEndianUnicode Default 默认就是Default

    * 返回 
        * >=0:输入成功
        * <0:输入失败

    * 示例 ：pcui_setEncoding('UTF8')

    * raise  :   无
    '''

def SHARP_createTableWidget2(row,column,flag1,flag2):
    '''√
    创建表格(在界面上的第三页创建一个表格,并且可以对表头进行固定操作(是否不拖动功能)或隐藏操作)

    * 参数 
        * row:表格的行数
        * column:表格的列数
        * flag1:表头固定操作(是否不拖动表格的长宽(flag1 = 0:固定(不拖动),flag1 = 1:不固定(拖动)))
        * flag2:表头隐藏操作(flag2 = 0:隐藏,flag2 = 1:不隐藏)

    * 返回 
        * >=0:创建成功
        * <0:创建失败

    * 示例 ：createTableWidget2(4,7,1,1)

    * raise  :   无
    '''

def SHARP_creatTableN(tabelName,row,column,name):
    '''√ 钰仪上位机可用 伙琨上位机不可用
    创建表格(在界面上的某一页创建一个表格,ps:目前只有第六页有这个功能)

    * 参数 
        * *tabelName:表格唯一ID(字符串格式),格式(页面_位置)(例如:"6_0",意思是:在第六页创建一个第一个的表格)
        * row:创建的表格有row行数
        * column:创建的表格有column列数
        * *name:标题栏(字符串格式)

    * 返  回 
        * >=0:创建成功
        * <0:创建失败

    * 示例 ：creatTableN("6_0", 6, 6, "test1")

    * raise  :   无
    '''

def SHARP_setTableContent2(row,column,content,color,width,height,text_size,text_color):
    '''√
    设置表格内容(在界面上的第三页已有表格上设置对应第n行和第n列的内容)

    * 参数 
        * row:表格的行数
        * column:表格的列数
        * *content:对应第row行和第column列的内容
        * color:对应第row行和第column列的背景颜色
        * width:列表格内容的宽度(以像素为单位,为0则使用系统默认的像素宽度)
        * height:行表格内容的高度(以像素为单位,为0则使用系统默认的像素长度)
        * text_size:字体大小
        * text_color:字体颜色

    * 返回 
        * >=0:设置成功
        * <0:设置失败

    * 示例 ：setTableContent2(1, 1, "test", 0xFFFFFF, 0, 0, 20, 0x00FF00)

    * raise  :   无
    '''

def SHARP_setTableContentN(tabelName,row,column,content,bgcolor,width,height,text_size):
    '''钰仪上位机可用 伙琨上位机不可用
    设置表格内容(在界面上的某一页已有表格上设置对应第row行和第column列的内容,ps:目前只有第六页有这个功能)

    * 参数 
        * row:表格的第row行
        * column:表格的第column列
        * *content:对应要设置的第row行第column列的内容
        * bgcolor:对应要设置的第row行第column列的背景颜色(0x00FF00表示绿色)
        * width:第column列的表格内容宽度(以像素为单位,为0则使用系统默认的像素宽度)
        * height:第row行的表格内容高度(以像素为单位,为0则使用系统默认的像素长度)
        * text_size:内容的字体大小

    * 返回 : 
        * >=0:设置成功
        * <0:设置失败

    * 示  例 ：setTableContentN("6_0", 1, 1, "test1", 0xFFFFFF, 0, 0, 10)

    * raise  :   无
    '''

def SHARP_setTableContentN2(tabelName,row,column,content,bgcolor,width,height,text_size,text_color):
    '''钰仪上位机可用 伙琨上位机不可用
    设置表格内容(在界面上的某一页已有表格上设置对应第row行和第column列的内容,ps:目前只有第六页有这个功能)

    * 参数 
        * row:表格的第row行
        * column:表格的第column列
        * *content:对应要设置的第row行第column列的内容
        * bgcolor:对应要设置的第row行第column列的背景颜色(0x00FF00表示绿色)
        * width:第column列的表格内容宽度(以像素为单位,为0则使用系统默认的像素宽度)
        * height:第row行的表格内容高度(以像素为单位,为0则使用系统默认的像素长度)
        * text_size:内容的字体大小
        * text_color:内容的字体颜色

    * 返回 
        * >=0:设置成功
        * <0:设置失败

    * 示例 ：setTableContentN2("6_0", 1, 1, "test1", 0xFFFFFF, 0, 0, 10, 0x00FF00)

    * raise  :   无
    '''

def SHARP_pcui_setTableSpan(row,column,x_count,y_count,content):
    '''钰仪上位机可用 伙琨上位机不可用
    合并界面上的第三页已有表格并可设置内容

    * 参数 
        * row:行
        * column:列
        * x_count:x个
        * y_count:y个
        * *content:内容(字符串格式)

    * 返回 
        * >=0:合并成功
        * <0:合并失败

    * 示例 ：pcui_setTableSpan(1,1,2,3,"test3")


    * raise  :   无
    '''

def SHARP_pcui_setTableSpan2(row,column,x_count,y_count,content,bgcolor,text_size,text_color):
    '''√钰仪上位机可用 伙琨上位机不可用
    合并界面上的第三页已有表格并可设置内容

    * 参数 
        * row:行
        * column:列
        * x_count:x个
        * y_count:y个
        * *content:内容(字符串格式)
        * bgcolor:对应要设置合并后的第row行第column列的背景颜色(0x00FF00表示绿色)
        * text_size:合并后内容的字体大小
        * text_color:合并后内容的字体颜色

    * 返回 
        * >=0:合并成功
        * <0:合并失败

    * 示例 ：pcui_setTableSpan2(2, 2, 3, 3, "test", 0xFFFFFF, 50, 0x00FF00)#白色,绿色

    * raise  :   无
    '''

def SHARP_setTableSpanN(tabelName,row,column,x_count,y_count,content):
    '''√钰仪上位机可用 伙琨上位机不可用
    合并表格并可设置内容(在界面上的某一页已有表格上合并对应第row行和第column列的内容,ps:目前只有第六页有这个功能)

    * 参数 
        * row:表格的第row行
        * column:表格的第column列
        * x_count:合并x_count个
        * y_count:合并y_count个
        * *content:合并之后的内容(字符串格式),可以为空(content = 0)则内容为row行column列的内容

    * 返回 
        * >=0:合并成功
        * <0:合并失败

    * 示例 ：setTableSpanN("6_0", 2, 2, 2, 2, "test1")

    * raise  :   无
    '''

def SHARP_pcui_setTableSpanN2(tabelName,row,column,x_count,y_count,content,bgcolor,text_size,text_color):
    '''√钰仪上位机可用 伙琨上位机不可用
    合并表格并可设置内容(在界面上的某一页已有表格上合并对应第row行和第column列的内容,ps:目前只有第六页有这个功能)

    * 参数 
        * row:表格的第row行
        * column:表格的第column列
        * x_count:合并x_count个
        * y_count:合并y_count个
        * *content:合并后的内容(字符串格式),可以为空(content = 0)则内容为row行column列的内容
        * bgcolor:对应要设置合并后的第row行第column列的背景颜色(0x00FF00表示绿色)
        * text_size:合并后内容的字体大小
        * text_color:合并后内容的字体颜色

    * 返回 
        * >=0:合并成功
        * <0:合并失败

    * 示  例 ：pcui_setTableSpanN2("6_0", 2, 2, 2, 2, "test1", 0xFFFFFF, 10, 0x00FF00)

    * raise  :   无
    '''

def SHARP_pcui_writeFileHead2(filename,fmt):
    '''钰仪上位机可用 伙琨上位机不可用
    写文件头部信息(文件可指定路径下生成)

    * 参数 
        * *filename:文件路径名(字符串格式,例如:"./LOG/test.csv" 或 "E:\\LOG\\test.csv")
        * *fmt:文件内容(字符串格式)

    * 返回 
        * >=0:写成功
        * <0:写失败

    * 示例 ：pcui_writeFileHead2("C:\\Users\\simonlaw\\Desktop\\test\\test.csv", "1adada212")

    * raise  :   无
    '''

def SHARP_pcui_writeFileDateContent(filename,fmt):
    '''√
    写文件内容(带日期和换行)

    * 参数 
        * *filename:文件名(字符串格式)
        * *fmt:文件内容(带日期格式和换行,字符串格式)

    * 返回 
        * >=0:写成功
        * <0:写失败

    * 示例 ：pcui_writeFileDateContent("test.txt", "321\r\nabc")

    * raise  :   无
    '''

def SHARP_pcui_writeFileDateContent2(filename,fmt):
    '''钰仪上位机可用 伙琨上位机不可用
    写文件内容(带日期和换行)(文件可指定路径下生成)

    * 参数 
        * *filename:文件路径名(字符串格式,例如:"./LOG/test.csv" 或 "E:\\LOG\\test.csv")
        * *fmt:文件内容(带日期格式和换行,字符串格式)

    * 返回 
        * >=0:写成功
        * <0:写失败

    * 示例 ：pcui_writeFileDateContent2("C:\\Users\\simonlaw\\Desktop\\test\\test.txt", "abc\r\n321")

    * raise  :   无
    '''

def SHARP_pcui_writeMultiContent2(filename,fmt):
    '''钰仪上位机可用 伙琨上位机不可用
    写文件内容并打印到文本框(文件可指定路径下生成)

    * 参数 
        * *filename:文件路径名(字符串格式,例如:"./LOG/test.csv" 或 "E:\\LOG\\test.csv")
        * *content:文件内容

    * 返回 
        * >=0:写成功
        * <0:写失败

    * 示例 ：pcui_writeMultiContent2("C:\\Users\\simonlaw\\Desktop\\test\\test.csv",'pcui_writeMultiContent2')

    * raise  :   无
    '''

def SHARP_pcui_Multifunction(recv_buff,timeout,parameter1):
    '''
    扩展接口(未知,具体用法需要商定)

    * 参数 
        * *recv_buff:接收到的数据(需要传进来一个数组,没用到就填0)
        * timeout:这个扩展接口的通讯超时时间(单位:ms)
        * *parameter1:参数1

    * 返回 
        * >=0:通讯成功
        * <0:通讯失败

    * 示  例  recv_buff="\0"*50 # 申请空间
            pcui_useExcelRead("C:\\Users\\simonlaw\\Desktop\\test\\test.xlsx","Sheet1","B2",getFileName)

    * raise  :   无                
    '''

def SHARP_barCodeCheckRoute():
    '''特殊功能没做测试
    开始测试时验证产品状态是否符合测试

    * 参数 : 无

    * 返回
        * >=0:测试成功
        * <0:测试失败

    * 示例 ：

    * raise  :   无
    '''

def SHARP_barCodePassStation():
    '''特殊功能没做测试
    提交产品测试结果数据

    * 参数 : 无

    * 返回 
        * >=0:提交成功
        * <0:提交失败

    * 示例 ：


    * raise  :   无
    '''

def SHARP_getStation():
    '''特殊功能没做测试

    获取测试站别代码及名称

    * 参数 : 无

    * 返回 
        * >=0:获取成功
        * <0:获取失败

    * 示例 ：

    * raise  :   无
    '''

def SHARP_getPCIP(ip):
    '''特殊功能没做测试
    获取PCIP

    * 参数 
        * *ip:获取到的PCIP(字符串格式)

    * 返回 
        * >=0:获取成功
        * <0:获取失败

    * 示例 ：

    * raise  :   无
    '''

def SHARP_pcui_showCurve(curveName,curveColor):
    '''特殊功能没做测试
    显示曲线

    * 参数 
        * *curveName:曲线名(字符串形式)
        * curveColor:曲线颜色

    * 返回 
        * >=0:显示成功
        * <0:显示失败

    * 示例 ：

    * raise  :   无
    '''

def SHARP_pcui_AdjustAGDGParam_Gammaxy(sendKey):
    '''√
    计算Gammaxy结果

    * 参数 
        * *sendKey:要计算的集合(同上位机第5页的按键功能一致)

    * 返回 
        * >=0:计算回发成功
        * <0:计算回发失败

    * 示例 ：pcui_AdjustAGDGParam_Gammaxy('Gammaxy.')
                获取的结果用这个函数：pcui_getKeyValue("Adjusted_Registers")

    * raise  :   无
    '''

def SHARP_pcui_call_pyFunction(fun_name,fun_type,value):
    '''特殊功能没做测试
    调用py文件里的函数

    * 参数 
        * *fun_name:py文件里的函数名(字符串格式,示例:py文件名.函数名)
        * *fun_type:函数的返回值类型(字符串格式)
        * *value:函数的返回值

    * 返回 
        * >=0:调用成功
        * <0:调用失败

    * 示例 ：

    * raise  :   无    
    '''

def SHARP_inputFtpUserName(name):
    '''特殊功能没做测试
    输入FTP服务器用户名

    * 参数 
        * *name:FTP用户名(字符串格式)

    * 返回 
        * >=0:输入成功
        * <0:输入失败

    * 示例 ：

    * raise  :   无
    '''

def SHARP_inputFtpPassword(password):
    '''特殊功能没做测试
     输入FTP服务器密码

    * 参数 
        * *password:FTP密码(字符串格式)

    * 返回 
        * >=0:输入成功
        * <0:输入失败

    * 示例 ：

    * raise  :   无
    '''

def SHARP_inputFtpHost(host):
    '''特殊功能没做测试

    输入FTP服务器地址或域名(字符串格式)

    * 参数  
        * host:FTP服务器地址或域名(字符串格式)

    * 返回 
        * >=0:输入成功
        * <0:输入失败

    * 示例 ：

    * raise  :   无
    '''

def SHARP_inputFtpPort(host):
    '''特殊功能没做测试

     输入FTP服务器端口

    * 参数 
        * host:FTP服务器端口

    * 返回 
        * >=0:输入成功
        * <0:输入失败

    * 示例 ：

    * raise  :   无
    '''

def SHARP_uploadFtpFile(ftp_server_file,local_file):
    '''特殊功能没做测试

    上传文件到FTP服务器

    * 参数
        * *ftp_server_file_name:要将本地文件名转发到FTP服务器文件夹下的文件名(字符串格式)
        * *local_file_name:本地文件名(可按照路径指定文件名,字符串格式)

    * 返回 
        * >=0:输入成功
        * <0:输入失败

    * 示例 ：

    * raise  :   无
    '''

def SHARP_pcui_getLogname(Logname):
    '''特殊功能没做测试

    获取扫码后填入的log名字 如没有填入就获取也是返回<0

    * 参数 
        * *Logname:获取到的log名字(字符串格式)

    * 返回 
        * >=0:获取成功
                <0:获取失败

    * 示例 ：

    * raise  :   无
    '''

def SHARP_AOI_NVM(is_on,timeout=2000):
    '''AOI功能

    回传是否执行烧录指令

    * 参数 
        * *is_on: 烧录指令(字符串) 'on' 开始 'off' 结束
        * timeout : 超时

    * 返回 
        * =0:获取成功
          -1:获取失败

    * 示例 :    SHARP_pcui_NVM('on')
                SHARP_pcui_NVM('off')
    * raise  :   无
    '''

def SHARP_AOI_Switch_page(page,timeout=2000):
    '''AOI功能

    选择当前工位的第几页

    * 参数 
        page: 0-5
        timeout:超时时间

    * 返回 
        * =0:获取成功
          -1:获取失败

    * 示例 :    SHARP_Switch_page(0)

    * raise  :   无
    '''

def SHARP_AOI_PG_State(State,timeout=2000):
    '''AOI功能

    设置PG状态

    * 参数 
        State: PG当前状态:0:就绪, 1:ok, 2:ng ,3:忙碌
        timeout:超时时间

    * 返回 
        * =0:获取成功
          -1:获取失败

    * 示例 :    SHARP_PG_State(0)

    * raise  :   无
    '''

def SHARP_AOI_PG_CMD(CMD,timeout=2000):
    '''AOI功能

    plc写入的指令

    * 参数 
        CMD: 1:PG强制重启 PG响应指令. 0:命令读取成功
        timeout:超时时间

    * 返回 
        * =0:获取成功
          -1:获取失败

    * 示例 :    SHARP_PG_CMD(0)

    * raise  :   无
    '''

def SHARP_AOI_PG_instruction(CMD,timeout=2000):
    '''AOI功能

    plc写入的指令

    * 参数 
        CMD :1:上料成功, Pc响应指令: 0:就绪.(命令读取成功, 可以写入下一条指令)
        timeout:超时时间

    * 返回 
        * =0:获取成功
          -1:获取失败

    * 示例 :    SHARP_PG_instruction(0)

    * raise  :   无
    '''

class Pcui(object):
    '''√
    通用上位机模块类

    * 参数  
        *

    * 返回 :  
        *

    * 注意 : 
        需要实例化
        
    * raise  :   无            
    '''   

   #'''
   #::
    #/* 常用颜色 */
    ARMCMD_BLACK = 0x000000#黑色
    ARMCMD_WHITE = 0xFFFFFF#白色
    ARMCMD_YELLOW = 0xFFFF00#黄色
    ARMCMD_GRAY = 0xC0C0C0#灰色
    ARMCMD_CYAN = 0x00FFFF#青色
    ARMCMD_ORANGE = 0xFF6100#橙色
    ARMCMD_GREEN = 0x00FF00#绿色
    ARMCMD_BROWN = 0x802A2A#棕色
    ARMCMD_RED = 0xFF0000#红色
    ARMCMD_BLUE = 0x0000FF#蓝色
    ARMCMD_PINK = 0xFFC0CB#粉红色
    ARMCMD_POWDER_BLUE = 0xB0E0E6#浅灰蓝色
    ARMCMD_ABAISER = 0x292421#象牙黑
    ARMCMD_BANANA = 0xE3CF57#香蕉色
    ARMCMD_ROYAL_BLUE = 0x4169E1#品蓝色
    ARMCMD_COLD_GRAY = 0x808A87#冷灰色
    ARMCMD_SKY_BLUE = 0x87CEEB#天蓝色
    ARMCMD_GOLDEN_YELLOW = 0xFFD700#金黄色
    ARMCMD_SAFFRON = 0xFF8000#桔黄色
    ARMCMD_BEIGE = 0xA39480#米色
    ARMCMD_IVORY = 0xFAFFF0#象牙白
    ARMCMD_TAWNY = 0xF0E68C#黄褐色
    ARMCMD_ROSE = 0xBC8F8F#玫瑰红
    ARMCMD_SNOW = 0xFFFAFA#雪白色
    ARMCMD_PURPLE = 0xA020F0#紫色
    ARMCMD_LAVENDER = 0xDA70D6#淡紫色
    ARMCMD_SEPIA = 0xD2B48C#棕褐色
   #'''

    def  pcuiDetection(self):
        ''' √
        检测通讯是否在线

        * 参数 : 无

        * 返回 
            * >=0:通讯在线
            * -1:通讯不在线

            * raise  :   无               
        '''

    def  pcui_printf(self,fmt):
        '''√
        打印内容到第二页右边的文本框,相当于printf函数

        * 参数 : 
            * *fmt:内容格式(字符串格式)

        * 返回 
            * >=0:打印成功
            * <0:打印失败

        * 示  例 ：pcui_printf('hello word')

        * raise  :   无     
        '''

    def  pcui_clearPrintf(self):
        '''√
        清空第二页右边文本框打印的内容

        * 参数 : 无

        * 返回 
            * >=0:清空成功
            * <0:清空失败

        * raise  :   无                
        '''

    def  selectShowPage(self,page):
        '''√
        选择显示某页界面

        * 参数 : 无

        * 返回 
            * >=0:显示成功
            * <0:显示失败

        * 示  例 ：selectShowPage(1)

        * raise  :   无   
        '''

    def  creatButton(self,name,page):
        '''√
        创建按键(在界面上指定的页面动态创建一个按键,创建过多可能会显示不全)

        * 参数 
            * *name:按键的名称(字符串格式,过多字符可能会显示不全,可创建中文按键)
            * page:页面(0~1)(从0(首页)开始,1为第一页)

        * 返回 
            * >=0:创建成功
            * <0:创建失败

        * 示  例 ：

        * raise  :   无 
        '''

    def  creatButtonPage4(self,name,x,y,height,width,size):
        '''√
        创建按键(在界面上的第4页动态创建一个按键,创建过多可能会显示不全)

        * 参数 
            * *name:按键的名称(字符串格式,过多字符可能会显示不全,可创建中文按键)
            * x:起始横坐标
            * y:起始纵坐标
            * height:按键的高度
            * width:按键的宽度
            * size:按键的字体大小

        * 返  回 
            * >=0:创建成功
            * <0:创建失败

        * 示  例 ：creatButtonPage4("按键btn4",100,100,100,200,24)

        * raise  :   无 
        '''

    def  setButton_backColor(self,name,color):
        '''√
        设置已创建的按键背景颜色(第四页的按键无法设置)

        * 参数 
            * *name:要设置的按键名称(字符串格式)
            * color:按键的背景颜色(pcui.h里有常用颜色,或等于 NOT 宏定义(表示不设置标签的背景颜色))

        * 返  回
            * >=0:创建成功
            * <0:创建失败

        * 示  例 ：setButton_backColor("按键btn1",0x00FF00)

        * raise  :   无
        '''

    def  getButton_backColor(self,name):
        '''√
        获取已创建的按键背景颜色

        * 参数 
            * *name:要获取的按键名称(字符串格式)

        * 返回 
            * 返回按键的背景颜色(返回格式:0xXXXXXX)
            * <0:获取失败

        * 示  例 ：getButton_backColor("按键btn1")

        * raise  :   无
        '''

    def  setLabel_Parameter(self,name,content,color):
        '''√
        设置标签参数(在界面上的首页动态创建一个标签,并设置标签的字体颜色和内容,若标签名相同,则只设置标签的字体颜色或标签内容)

        * 参数 
            * *name:标签名(字符串格式,过多字符可能会显示不全,可中文标签名)
            * *content:标签名的内容(字符串格式,或等于 0 或 NULL(表示不设置标签名的内容),过多字符可能会显示不全)
            * color:标签名的字体颜色(pcui.h里有常用颜色,或等于 NOT 宏定义(表示不设置标签的字体颜色))

        * 返  回 
            * >=0:设置成功
            * <0:设置失败

        * 示例 ：setLabel_Parameter("标签名lab1","lab1_test",0x00ff00)

        * raise  :   无
        '''

    def  setLineEdit_Parameter(self,name,content):
        '''√
        设置单行编辑框参数(在界面上的首页动态创建一个单行编辑框)

        * 参数 
            * *name:单行编辑框左边的标签名(字符串格式,过多字符可能会显示不全,可中文标签名)
            * *content:编辑框里的内容(字符串格式,或等于 0(表示没有内容),过多字符可能会显示不全,可中文内容)

        * 返回 
            * >=0:设置成功
            * <0:设置失败

        * 示例 ：setLineEdit_Parameter("编辑框lineEdit:","lineEdit_Test")

        * raise  :   无
        '''

    def  setLineEdit_ParameterPage4(self,x1,y1,width,size,bgcolor,type,name,content):
        '''√
        设置单行编辑框参数(在界面上的第4页上某一位置动态创建一个单行编辑框)

        * 参数 
            * x1:起点横坐标(以像素为单位)
            * y1:起点纵坐标(以像素为单位)
            * width:单行编辑框的宽度(以像素为单位)
            * size:单行编辑框左边标签名的字体大小
            * bgcolor:单行编辑框的背景颜色
            * type:单行编辑框类型(0:编辑框里面的内容不可以修改,1:编辑框里面的内容可以修改)
            * *name:单行编辑框左边的标签名(字符串格式,过多字符可能会显示不全,可中文标签名)
            * *content:编辑框里的内容(字符串格式,或等于 0(表示没有内容),过多字符可能会显示不全,可中文内容)

        * 返回 
            * >=0:设置成功
            * <0:设置失败

        * 示例 ：setLineEdit_ParameterPage4(100,0,100,20,0xffff00,0,"第四页编辑框LineEdge1","LineEdge1_t")

        * raise  :   无
        '''

    def  getLineEdit_Content(self,name,content):
        '''√ (钰仪上位机可用 伙琨上位机不可用)
        获取单行编辑框内容(获取界面上的首页已设置的单行编辑框内容)

        * 参数 
            * *name:要获取的单行编辑框左边的标签名(字符串格式,过多字符可能会显示不全,可中文标签名)
            * *content:存放获取到编辑框里的内容(字符串格式,可中文内容)

        * 返回 
            * >=0:获取成功 
            * <0:获取失败 

        * 示例 ：GetKeyVal="\0"*50 申请内存
                ret= getLineEdit_Content("lineEdit:",GetKeyVal)

        * raise  :   无        
        '''

    def  getLineEdit_ContentPage4(self,name,content):
        '''√
        获取单行编辑框内容(获取界面上的第4页已设置的单行编辑框内容)

        * 参数 
            * *name:要获取的单行编辑框左边的标签名(字符串格式,过多字符可能会显示不全,可中文标签名)
            * *content:存放获取到编辑框里的内容(字符串格式,可中文内容)

        * 返回 
            * ret_val >=0:获取成功 <0:获取失败 

        * 示例 ：GetKeyVal="\0"*50 申请内存
                ret= getLineEdit_ContentPage4("第四页编辑框LineEdge1",GetKeyVal)

        * raise  :   无            
        '''

    def  setDialog(self,content,type):
        '''√
        设置对话框(在界面上弹出一个对话框)

        * 参数 
            * *content:对话框的内容(字符串格式,可中文内容)
            * type:对话框类型(0:不带编辑框,1:带编辑框)

        * 返回 : >=0:设置成功
                    <0:设置失败

        * 示例 ： setDialog('Connection successful',0)

        * raise  :   无    
        '''

    def  creatTable(row,column):
        '''√
        创建表格(在界面上的第三页创建一个表格)

        * 参数 
            * row:表格的行数
            * column:表格的列数

        * 返回  
            * >=0:创建成功
            * <0:创建失败

        * 示例 ：creatTable(3,4)

        * raise  :   无   
        '''

    def  setRowTableName(self,name,nameLen,height,bgcolor):
        '''√ (钰仪上位机可用 伙琨上位机 表格名背景颜色设置不可用)
        设置行表格名(在界面上的第三页已有表格设置行表格名)

        * 参数 
            * name:行表格名 (列表形式传回 ,最多支持256个数据)
            * nameLen:行表格名的个数
            * height:行表格名的高度(以像素为单位,为0则使用系统默认的像素长度)
            * bgcolor:行表格名的背景颜色(pcui.h里有常用颜色,或等于 NOT 宏定义(表示使用默认的背景颜色))

        * 返回 
            * >=0:设置成功
            * <0:设置失败

        * 示例 ：RowTab = ["廖RowTab1","毅RowTab2","森RowTab3"]
                    setRowTableName(RowTab,len(RowTab),50,0x00ffff)

        * raise  :   无              
        '''

    def  setColumnTableName(self,name,nameLen,breadth,bgcolor):
        '''√ (钰仪上位机可用 伙琨上位机 表格名背景颜色设置不可用)
        设置列表格名(在界面上的第三页已有表格设置列表格名)

        * 参数 
            * name:列表格名(列表形式传回 ,最多支持256个数据)
            * nameLen:列表格名的个数
            * breadth:列表格名的宽度(以像素为单位,为0则使用系统默认的像素宽度)
            * bgcolor:列表格名的背景颜色(pcui.h里有常用颜色,或等于 NOT 宏定义(表示使用默认的背景颜色))

        * 返回 
            * >=0:设置成功
            * <0:设置失败

        * 示  例 ：RowTab = ["廖ColumnTab1","毅ColumnTab2","森ColumnTab3"]
                    setColumnTableName(RowTab,len(RowTab),150,0x00ffff)
                    
        * raise  :   无              
        '''

    def  setTableContent(self,row,column,content,color,width,height,text_size):
        '''√
        设置表格内容(在界面上的第三页已有表格上设置对应第n行和第n列的内容)

        * 参数  
            * row:表格的行数
            * column:表格的列数
            * *content:对应第row行和第column列的内容 (可中文)
            * color:对应第row行和第column列的背景颜色
            * width:列表格内容的宽度(以像素为单位,为0则使用系统默认的像素宽度)
            * height:行表格内容的高度(以像素为单位,为0则使用系统默认的像素长度)
            * text_size:字体大小

        * 返回 
            * >=0:设置成功
            * <0:设置失败

        * 示例 ：setTableContent(0,0,"森text1",0x00ffff,50,80,54)

        * raise  :   无   
        '''

    def  creatColorBlock(self,x1,y1,x2,y2,color):
        '''√
        在界面上的第四页上创建一个色块

        * 参数 
            * x1:起点横坐标(以像素为单位)
            * y1:起点纵坐标(以像素为单位)
            * x2:终点横坐标(以像素为单位)
            * y2:终点纵坐标(以像素为单位)
            * color:色块的背景颜色

        * 返回 
            * >=0:设置成功
            * <0:设置失败

        * 示例 ： creatColorBlock(100,150,150,200,0x00ffff)

        * raise  :   无 
        '''

    def  setBlockContent(self,x1,y1,x2,y2,color,size,content):
        ''' √ (钰仪上位机可用 伙琨上位机不可用)
        在界面上的第四页上设置内容

        * 参数 
            * x1:起点横坐标(以像素为单位)
            * y1:起点纵坐标(以像素为单位)
            * x2:终点横坐标(以像素为单位)
            * y2:终点纵坐标(以像素为单位)
            * color:内容的字体颜色
            * size:内容的字体大小
            * *content:色块里的内容(字符串格式)

        * 返回 
            * >=0:设置成功
            * <0:设置失败

        * 示  例 setBlockContent(200,200,300,300,0x00ffff,24,"setBlockContent")

        * raise  :   无 
        '''

    def  setBlockContentPage4(self,x1,y1,x2,y2,color,bgcolor,size,content):
        ''' √
        在界面上的第四页上设置内容(带背景颜色)

        * 参数 
            * x1:起点横坐标(以像素为单位)
            * y1:起点纵坐标(以像素为单位)
            * x2:终点横坐标(以像素为单位)
            * y2:终点纵坐标(以像素为单位)
            * color:内容的字体颜色
            * size:内容的字体大小
            * *content:色块里的内容(字符串格式)

        * 返回 
            * >=0:设置成功
            * <0:设置失败

        * 示  例 ：setBlockContentPage4(200,200,300,300,0x00ffff,0xffff00,24,"setBlockContentPage4")


        '''

    def  createEwm(self,name):
        '''不可用 上位机不实现
        在首页创建一个扫码框

        * 参数 
            * *name:扫码框的名字

        * 返回
            * >=0:创建成功
            * <0:创建失败

        * 示例 ：

        * raise  :   无
        '''

    def  createEwmPage4(self,name,x,y,height,width,size):
        '''√
        在第4页创建一个扫码框

        * 参数 : 
            * *name:扫码框的名字

        * 返回 
            * >=0:创建成功
            * <0:创建失败

        * 示例 ：createEwmPage4("扫码框Ewm",200,200,300,300,24)

        * raise  :   无
        '''

    def  createEspBox(self,x1,y1,x2,y2):
        '''
        在第4页上的某个位置创建方框

        * 参数 
            * x1:起点横坐标(以像素为单位)
            * y1:起点纵坐标(以像素为单位)
            * x2:长(以像素为单位)
            * y2:宽(以像素为单位)

        * 返回 
            * >=0:创建成功
            * <0:创建失败

        * 示例 ：

        * raise  :   无

        '''

    def  addComboBox(self,x1,y1,x2,y2,size,identify,content):
        '''
        在第4页上的某个位置添加下拉框内容

        * 参数 
            * x1:起点横坐标(以像素为单位)
            * y1:起点纵坐标(以像素为单位)
            * x2:终点横坐标(以像素为单位)
            * y2:终点纵坐标(以像素为单位)
            * size:字体大小
            * *identify:某组下拉框的标识名
            * *content:下拉框内容

        * 返回 
            * >=0:添加成功
            * <0:添加失败

        * 示  例 ：

        * raise  :   无
        '''

    def  getComboBox(self,identify,content):
        '''√(钰仪上位机可用 伙琨上位机不可用)
        根据某组下拉框标识名获取选中的内容

        * 参数 
            * *identify:某组下拉框的标识名
            * *content:获取到的下拉框内容

        * 返回 
            * >=0:获取成功 
            * <0:获取失败 

        * 示例 ：GetKeyVal="\0"*50  #申请内存
                ret = getComboBox("下拉框ComboBox",GetKeyVal)
                if 'ComboBox_text1' in GetKeyVal:
                    print('OK')

        * raise  :   无
        '''

    def  clearComboBox(self,identify):
        '''√(钰仪上位机可用 伙琨上位机不可用)
        根据某组下拉框标识名清除所有内容

        * 参数 
            * *identify:某组下拉框的标识名

        * 返回 
            * >=0:清除成功
            * <0:清除失败

        * 示例 ：clearComboBox("下拉框ComboBox")

        * raise  :   无
        '''

    def  clearFourPage(self):
        '''√
        清除在界面上第四页里的所有色块和内容

        * 参数 : 无

        * 返回 
            * >=0:清除成功
            * <0:清除失败

        * 示例 ：

        * raise  :   无
        '''

    def  clearWidget(self):
        '''√
        清除界面上的所有控件

        * 参数 : 无

        * 返回 
            * >=0:清除成功
            * <0:清除失败

        * 示例 ：

        * raise  :   无
        '''

    def  locationEwmCursor(self,name):
        '''√
        定位在第4页的扫码框光标

        * 参数 
            * *name:扫码框的名字

        * 返回 
            * >=0:定位成功
            * <0:定位失败

        * 示例 ：locationEwmCursor("扫码框Ewm")

        * raise  :   无
        '''

    def  pcui_setKeyValue(self,key,value):
        '''√
        设置键值对

        * 参数 
            * *key:要设置的键(字符串格式)
            * *value:要设置的值(字符串格式)

        * 返回 
            * >=0:设置成功
            * <0:设置失败

        * 示例 ：pcui_setKeyValue("SendWebServices.Resultdata","key_val1")

        * raise  :   无
        '''

    def  pcui_appendKeyValue(self,key,value):
        '''√
        追加键值对

        * 参数 
            * *key:要追加的键(字符串格式)
            * *value:获追加的值(字符串格式)

        * 返回
            * >=0:追加成功
            * <0:追加失败

        * 示例 ：pcui_appendKeyValue("SendWebServices.Resultdata","key_val2")

        * raise  :   无
        '''

    def  pcui_getKeyValue(self,key,value):
        '''√
        获取键值对

        * 参数 
            * *key:要获取的键(字符串格式)
            * *value:获取到的值(字符串格式)

        * 返回 
            * >=0:获取成功
            * <0:获取失败

        * 示例 ：GetKeyVal="\0"*50  #申请缓冲区
                    pcui_getKeyValue("SendWebServices.Resultdata",GetKeyVal)
                    if "key_val1" in GetKeyVal:
        #               print('ok')

        * raise  :   无
        '''

    def  pcui_readKeyValueData(self,key,offset,size,data):
        '''√
        读取键值对里的某一段数据

        * 参数 
            * *key:要获取的键(字符串格式)
            * offset:数据内容偏移
            * size:要读取的数据大小
            * *data:读取到的数据

        * 返回 
            * 读取到的数据大小
            * <0:读取失败

        * 示  例 ：readKeyValue="\0"*50
                    pcui_readKeyValueData("SendWebServices.Resultdata",1,4,readKeyValue)

        * raise  :   无
        '''

    def  pcui_readKeyValueLine(self,key,line,data):
        '''√
        读取键值对里的某一行数据

        * 参数 
            * *key:要获取的键(字符串格式)
            * line:第line行
            * *data:读取到的某一行数据

        * 返回 
            * 读取到的数据大小
            * <0:读取失败

        * 示例 ：readKeyLine="\0"*50
                pcui_readKeyValueLine("SendWebServices.Resultdata",0,readKeyLine)

        * raise  :   无
        '''

    def  pcui_saveKeyValue(self):
        '''√
        保存已经设置的键值对

        * 参数 : 无

        * 返回 
            * >=0:保存成功
            * <0:保存失败

        * 示  例 ：

        * raise  :   无
        '''

    def  pcui_clearKeyValue(self):
        '''√(钰仪上位机可用 伙琨上位机不可用)
        清除键值对

        * 参数 : 无

        * 返回 
            * >=0:清除成功
            * <0:清除失败

        * 示例 ：

        * raise  :   无    
        '''

    def  pcui_writeFileHead(self,filename,fmt):
        '''√
        写文件头

        * 参数 
            * *filename:文件名(字符串格式)
            * *fmt:文件内容(字符串格式)

        * 返回 
            * >=0:写成功
            * <0:写失败

        * 示  例 ：pcui_writeFileHead("file_test.txt","write_test")

        * raise  :   无
        '''

    def  pcui_writeFileContent(self,filename,fmt):
        '''√
        写文件内容

        * 参数  
            * *filename:文件名(字符串格式)
            * *fmt:文件内容(字符串格式)

        * 返回 
            * >=0:写成功
            * <0:写失败

        * 示  例 ：pcui_writeFileContent("file_test.txt","write_1-2-3-4")

        * raise  :   无
        '''

    def  pcui_writeMultiContent(self,filename,fmt):
        '''√
        写文件内容并打印到文本框

        * 参数 
            * *filename:文件名(字符串格式)
            * *content:文件内容

        * 返回 
            * >=0:写成功
            * <0:写失败

        * 示例 ：pcui_writeMultiContent("file_test.txt","test123456")

        * raise  :   无
        '''

    def  loadFile(self,path):
        '''√
        加载某一路径下的文件

        * 参数 
            * *path:路径(字符串格式)

        * 返回 
            * >=0:加载成功
            * <0:加载失败

        * 示例 ：loadFile("D:/Program Files/BySerial-通用版/bin/Debug/Log/fileTest.txt")

        * raise  :   无
        '''

    def  pcui_getDate(self,format,dateTime):
        '''√
        获取日期时间

        * 参数 
            * *format:日期时间格式(字符串格式)
            * *dateTime:获取到的日期时间(字符串格式)

        * 返回 
            * >=0:获取成功
            * <0:获取失败

        * 示例 ：GetTime="yyyy-MM-dd:hh:mm:ss"
                    getDate="\0"*50
                    ret = pcui_getDate(GetTime,getDate)
                    print(getDate)

        * raise  :   无
        '''

    def  pcui_Run_bat(self,filepath,filename):
        '''√钰仪上位机不可用 伙琨上位机能用但是会报错
        运行bat文件

        * 参数 
            * *filepath:文件路径(字符串格式)
            * *filename:文件名(字符串格式)

        * 返回 
            * >=0:写成功
            * <0:写失败

        * 示  例 ：pcui_Run_bat("D:\\test",'test.bat')

        * raise  :   无
        '''

    def  pcui_wPathFileDateContent(self,filepath,filename,fmt):
        '''√ 钰仪上位机不能用  伙琨上位机写内容不带日期和换行
        带路径写文件内容(带日期和换行)  

        * 参数 
            * *filepath:文件路径(字符串格式)
            * *filename:文件名(字符串格式)
            * *fmt:文件内容(带日期格式和换行,字符串格式)

        * 返回 
            * >=0:写成功
            * <0:写失败

        * 示例 ：pcui_wPathFileDateContent('C:\\Users\\simonlaw\\Desktop',"fileTest.txt","test")

        * raise  :   无
        '''

    def  readFile(self,data,offset,size):
        '''√
        读取加载路径下的文件内容

        * 参数 
            * *data:读取到的数据
            * offset:数据内容偏移
            * size:要读取的数据大小

        * 返回 
            * 读取到的数据大小
            * -1:读取失败

        * 示  例 ：ReadDate="\0"*10
                    readFile(ReadDate,0,len(ReadDate))

        * raise  :   无
        '''

    def  pcui_copyMoveFile(self,source_path,goal_path):
        '''√
        拷贝并移动某个路径下的文件

        * 参数 
            * *source_path:要移动的文件名路径(示例: "C:\\Users\\lxb\\Desktop\\PCUI\\PCUI_Test.txt")
            * *goal_path:移动到的目标文件夹路径(示例: "C:\\Users\\lxb\\Desktop\\PCUI_Test.txt")

        * 返回 
            * >=0:拷贝并移动成功
            * <0:拷贝并移动失败

        * 示例 ：pcui_copyMoveFile('C:\\Users\\simonlaw\\Desktop\\fileTest.txt','C:\\Users\\simonlaw\\Desktop\\test\\fileTest.txt')

        * raise  :   无
        '''

    def  pcui_modifyFileName(self,source_path,goal_path):
        '''√
        修改某个路径下文件的文件名

        * 参数 
            * *source_path:要修改的文件名路径(示例: "C:\\Users\\lxb\\Desktop\\PCUI\\PCUI_Test.txt")
            * *goal_name:要修改的名字(示例: "Test_PCUI.txt")

        * 返回 
            * >=0:修改成功
            * <0:修改失败

        * 示  例 ：pcui_modifyFileName('C:\\Users\\simonlaw\\Desktop\\test\\fileTest.txt',"goalFile.txt")

        * raise  :   无
        '''

    def  pcui_deleteFile(self,file_path_name):
        '''√
        删除某个路径下的文件

        * 参数 
            * *file_path_name:要删除的文件路径名(示例: "C:\\Users\\lxb\\Desktop\\PCUI\\PCUI_Test.txt")

        * 返回
            * >=0:删除成功
            * <0:删除失败

        * 示例 ：pcui_deleteFile('C:\\Users\\simonlaw\\Desktop\\test\\goalFile.txt')

        * raise  :   无
        '''

    def  pcui_getFileName(self,order,folder_path,file_name):
        '''√
        根据修改日期先后顺序(近期的日期时间)获取某个路径下的文件名

        * 参数 
            * order:0~无穷大(0表示离windows系统时间最近一次修改日期文件的文件名,1表示离windows系统时间次近修改日期文件的文件名,以此类推)
            * *folder_path:要获取的文件夹路径(示例: "C:\\Users\\lxb\\Desktop\\PCUI", 传入数组)
            * *file_name:获取到的文件名(示例: "PCUI_Test.txt", 传入数组)

        * 返回 
            * >=0:获取成功,返回文件名个数
            * <0:获取失败

        * 示例 ：pcui_getFileName(0,"C:\\Users\\simonlaw\\Desktop\\test",getFileName)

        * raise  :   无
        '''

    def  pcui_useExcelRead(self,file_path_name,sheet_name,xy,excel_content):
        '''不可用
        读取xls,xlsx,xlsm文件对应坐标的内容

        * 参数
            * *file_path_name:文件路径名(示例: "C:\\Users\\lxb\\Desktop\\PCUI\\WPC_7.xlsm" 或者 "./WPC_7.xlsm")
            * *sheet_name:工作表名字
            * *xy:行列坐标(字符串格式, 传入 "A1" - ... 或者 "A1,A2" - ...)
            * *excel_content:读取到的对应坐标内容(字符串格式,传入数组)

        * 返回 
            * >=0:读取成功
            * <0:读取失败

        * 示  例 ：getFileName="\0"*50 # 申请空间
                    pcui_useExcelRead("C:\\Users\\simonlaw\\Desktop\\test\\test.xlsx","Sheet1","B2",getFileName)

        * raise  :   无
        '''

    def  pcui_useExcelWrite(self,file_path_name,sheet_name,excel_content):
        '''不可用
        写入对应坐标(xx,xx)xls,xlsx,xlsm文件的内容

        * 参数 
            * *file_path_name:文件路径名(示例: "C:\\Users\\lxb\\Desktop\\PCUI\\WPC_7.xlsm" 或者 "./WPC_7.xlsm")
            * *sheet_name:工作表名字
            * *excel_content:写入对应坐标内容(字符串格式,传入字符串数组内容"A1=1,A2=2,A3=3")

        * 返回 
            * >=0:写入成功
            * <0:写入失败

        * 示例 ：pcui_useExcelWrite("C:\\Users\\simonlaw\\Desktop\\test\\test.xlsx","Sheet1",'B3 = getFileName')

        * raise  :   无
        '''

    def  pcui_useExcelVBA(self,file_path_name,macro):
        '''不可用
        调用xls,xlsx,xlsm文件内容里对应VBA宏

        * 参数 
            * *file_path_name:文件路径名(示例: "C:\\Users\\lxb\\Desktop\\PCUI\\WPC_7.xlsm" 或者 "./WPC_7.xlsm")
            * *macro:要调用的宏指令(字符串格式,传入字符串数组内容,示例: "WPC")

        * 返回
            * >=0:调用成功
            * <0:调用失败

        * 示  例 ：

        * raise  :   无
        '''

    def  pcui_useExcelOpen(self,file_path_name):
        '''不可用
        打开某个xls,xlsx,xlsm文件

        * 参数 
            * *file_path_name:文件路径名(示例: "C:\\Users\\lxb\\Desktop\\PCUI\\WPC_7.xlsm" 或者 "./WPC_7.xlsm")

        * 返回 
            * >=0:打开成功
            * <0:打开失败

        * 示例 :

        * raise  :   无
        '''

    def  pcui_useExcelClose(self):
        '''不可用
        关闭某个xls,xlsx,xlsm文件,调用之前需要确定之前有调用 pcui_useExcelOpen 函数

        * 参数 : 无

        * 返回 
            * >=0:关闭成功
            * <0:关闭失败

        * 示例 ：

        * raise  :   无
        '''

    def  pcui_createTableWidget(self,row,column,flag):
        '''√
        创建表格(在界面上的第三页创建一个表格,带是否不拖动功能)

        * 参数 
            * row:表格的行数
            * column:表格的列数
            * flag:是否不拖动表格的长宽(flag = 0:不拖动,flag = 1:拖动)

        * 返回 
            * >=0:创建成功
            * <0:创建失败

        * 示例 ：pcui_createTableWidget(4,5,1)

        * raise  :   无
        '''

    def  pcui_setEncoding(self,format):
        '''√
        设置通用从机接收指令的编码格式

        * 参数 
            * *format:UTF7 UTF8 UTF32 ASCII Unicode BigEndianUnicode Default 默认就是Default

        * 返回 
            * >=0:输入成功
            * <0:输入失败

        * 示例 ：pcui_setEncoding('UTF8')

        * raise  :   无
        '''

    def  createTableWidget2(self,row,column,flag1,flag2):
        '''√
        创建表格(在界面上的第三页创建一个表格,并且可以对表头进行固定操作(是否不拖动功能)或隐藏操作)

        * 参数 
            * row:表格的行数
            * column:表格的列数
            * flag1:表头固定操作(是否不拖动表格的长宽(flag1 = 0:固定(不拖动),flag1 = 1:不固定(拖动)))
            * flag2:表头隐藏操作(flag2 = 0:隐藏,flag2 = 1:不隐藏)

        * 返回 
            * >=0:创建成功
            * <0:创建失败

        * 示例 ：createTableWidget2(4,7,1,1)

        * raise  :   无
        '''

    def  creatTableN(self,tabelName,row,column,name):
        '''√ 钰仪上位机可用 伙琨上位机不可用
        创建表格(在界面上的某一页创建一个表格,ps:目前只有第六页有这个功能)

        * 参数 
            * *tabelName:表格唯一ID(字符串格式),格式(页面_位置)(例如:"6_0",意思是:在第六页创建一个第一个的表格)
            * row:创建的表格有row行数
            * column:创建的表格有column列数
            * *name:标题栏(字符串格式)

        * 返  回 
            * >=0:创建成功
            * <0:创建失败

        * 示例 ：creatTableN("6_0", 6, 6, "test1")

        * raise  :   无
        '''

    def  setTableContent2(self,row,column,content,color,width,height,text_size,text_color):
        '''√
        设置表格内容(在界面上的第三页已有表格上设置对应第n行和第n列的内容)

        * 参数 
            * row:表格的行数
            * column:表格的列数
            * *content:对应第row行和第column列的内容
            * color:对应第row行和第column列的背景颜色
            * width:列表格内容的宽度(以像素为单位,为0则使用系统默认的像素宽度)
            * height:行表格内容的高度(以像素为单位,为0则使用系统默认的像素长度)
            * text_size:字体大小
            * text_color:字体颜色

        * 返回 
            * >=0:设置成功
            * <0:设置失败

        * 示例 ：setTableContent2(1, 1, "test", 0xFFFFFF, 0, 0, 20, 0x00FF00)

        * raise  :   无
        '''

    def  setTableContentN(self,tabelName,row,column,content,bgcolor,width,height,text_size):
        '''钰仪上位机可用 伙琨上位机不可用
        设置表格内容(在界面上的某一页已有表格上设置对应第row行和第column列的内容,ps:目前只有第六页有这个功能)

        * 参数 
            * row:表格的第row行
            * column:表格的第column列
            * *content:对应要设置的第row行第column列的内容
            * bgcolor:对应要设置的第row行第column列的背景颜色(0x00FF00表示绿色)
            * width:第column列的表格内容宽度(以像素为单位,为0则使用系统默认的像素宽度)
            * height:第row行的表格内容高度(以像素为单位,为0则使用系统默认的像素长度)
            * text_size:内容的字体大小

        * 返回 : 
            * >=0:设置成功
            * <0:设置失败

        * 示  例 ：setTableContentN("6_0", 1, 1, "test1", 0xFFFFFF, 0, 0, 10)

        * raise  :   无
        '''

    def  setTableContentN2(self,tabelName,row,column,content,bgcolor,width,height,text_size,text_color):
        '''钰仪上位机可用 伙琨上位机不可用
        设置表格内容(在界面上的某一页已有表格上设置对应第row行和第column列的内容,ps:目前只有第六页有这个功能)

        * 参数 
            * row:表格的第row行
            * column:表格的第column列
            * *content:对应要设置的第row行第column列的内容
            * bgcolor:对应要设置的第row行第column列的背景颜色(0x00FF00表示绿色)
            * width:第column列的表格内容宽度(以像素为单位,为0则使用系统默认的像素宽度)
            * height:第row行的表格内容高度(以像素为单位,为0则使用系统默认的像素长度)
            * text_size:内容的字体大小
            * text_color:内容的字体颜色

        * 返回 
            * >=0:设置成功
            * <0:设置失败

        * 示例 ：setTableContentN2("6_0", 1, 1, "test1", 0xFFFFFF, 0, 0, 10, 0x00FF00)

        * raise  :   无
        '''

    def  pcui_setTableSpan(self,row,column,x_count,y_count,content):
        '''钰仪上位机可用 伙琨上位机不可用
        合并界面上的第三页已有表格并可设置内容

        * 参数 
            * row:行
            * column:列
            * x_count:x个
            * y_count:y个
            * *content:内容(字符串格式)

        * 返回 
            * >=0:合并成功
            * <0:合并失败

        * 示例 ：pcui_setTableSpan(1,1,2,3,"test3")


        * raise  :   无
        '''

    def  pcui_setTableSpan2(self,row,column,x_count,y_count,content,bgcolor,text_size,text_color):
        '''√钰仪上位机可用 伙琨上位机不可用
        合并界面上的第三页已有表格并可设置内容

        * 参数 
            * row:行
            * column:列
            * x_count:x个
            * y_count:y个
            * *content:内容(字符串格式)
            * bgcolor:对应要设置合并后的第row行第column列的背景颜色(0x00FF00表示绿色)
            * text_size:合并后内容的字体大小
            * text_color:合并后内容的字体颜色

        * 返回 
            * >=0:合并成功
            * <0:合并失败

        * 示例 ：pcui_setTableSpan2(2, 2, 3, 3, "test", 0xFFFFFF, 50, 0x00FF00)#白色,绿色

        * raise  :   无
        '''

    def  setTableSpanN(self,tabelName,row,column,x_count,y_count,content):
        '''√钰仪上位机可用 伙琨上位机不可用
        合并表格并可设置内容(在界面上的某一页已有表格上合并对应第row行和第column列的内容,ps:目前只有第六页有这个功能)

        * 参数 
            * row:表格的第row行
            * column:表格的第column列
            * x_count:合并x_count个
            * y_count:合并y_count个
            * *content:合并之后的内容(字符串格式),可以为空(content = 0)则内容为row行column列的内容

        * 返回 
            * >=0:合并成功
            * <0:合并失败

        * 示例 ：setTableSpanN("6_0", 2, 2, 2, 2, "test1")

        * raise  :   无
        '''

    def  pcui_setTableSpanN2(self,tabelName,row,column,x_count,y_count,content,bgcolor,text_size,text_color):
        '''√钰仪上位机可用 伙琨上位机不可用
        合并表格并可设置内容(在界面上的某一页已有表格上合并对应第row行和第column列的内容,ps:目前只有第六页有这个功能)

        * 参数 
            * row:表格的第row行
            * column:表格的第column列
            * x_count:合并x_count个
            * y_count:合并y_count个
            * *content:合并后的内容(字符串格式),可以为空(content = 0)则内容为row行column列的内容
            * bgcolor:对应要设置合并后的第row行第column列的背景颜色(0x00FF00表示绿色)
            * text_size:合并后内容的字体大小
            * text_color:合并后内容的字体颜色

        * 返回 
            * >=0:合并成功
            * <0:合并失败

        * 示  例 ：pcui_setTableSpanN2("6_0", 2, 2, 2, 2, "test1", 0xFFFFFF, 10, 0x00FF00)

        * raise  :   无
        '''

    def  pcui_writeFileHead2(self,filename,fmt):
        '''钰仪上位机可用 伙琨上位机不可用
        写文件头部信息(文件可指定路径下生成)

        * 参数 
            * *filename:文件路径名(字符串格式,例如:"./LOG/test.csv" 或 "E:\\LOG\\test.csv")
            * *fmt:文件内容(字符串格式)

        * 返回 
            * >=0:写成功
            * <0:写失败

        * 示例 ：pcui_writeFileHead2("C:\\Users\\simonlaw\\Desktop\\test\\test.csv", "1adada212")

        * raise  :   无
        '''

    def  pcui_writeFileDateContent(self,filename,fmt):
        '''√
        写文件内容(带日期和换行)

        * 参数 
            * *filename:文件名(字符串格式)
            * *fmt:文件内容(带日期格式和换行,字符串格式)

        * 返回 
            * >=0:写成功
            * <0:写失败

        * 示例 ：pcui_writeFileDateContent("test.txt", "321\r\nabc")

        * raise  :   无
        '''

    def  pcui_writeFileDateContent2(self,filename,fmt):
        '''钰仪上位机可用 伙琨上位机不可用
        写文件内容(带日期和换行)(文件可指定路径下生成)

        * 参数 
            * *filename:文件路径名(字符串格式,例如:"./LOG/test.csv" 或 "E:\\LOG\\test.csv")
            * *fmt:文件内容(带日期格式和换行,字符串格式)

        * 返回 
            * >=0:写成功
            * <0:写失败

        * 示例 ：pcui_writeFileDateContent2("C:\\Users\\simonlaw\\Desktop\\test\\test.txt", "abc\r\n321")

        * raise  :   无
        '''

    def  pcui_writeMultiContent2(self,filename,fmt):
        '''钰仪上位机可用 伙琨上位机不可用
        写文件内容并打印到文本框(文件可指定路径下生成)

        * 参数 
            * *filename:文件路径名(字符串格式,例如:"./LOG/test.csv" 或 "E:\\LOG\\test.csv")
            * *content:文件内容

        * 返回 
            * >=0:写成功
            * <0:写失败

        * 示例 ：pcui_writeMultiContent2("C:\\Users\\simonlaw\\Desktop\\test\\test.csv",'pcui_writeMultiContent2')

        * raise  :   无
        '''

    def  pcui_Multifunction(self,recv_buff,timeout,parameter1):
        '''
        扩展接口(未知,具体用法需要商定)

        * 参数 
            * *recv_buff:接收到的数据(需要传进来一个数组,没用到就填0)
            * timeout:这个扩展接口的通讯超时时间(单位:ms)
            * *parameter1:参数1

        * 返回 
            * >=0:通讯成功
            * <0:通讯失败

        * 示  例  recv_buff="\0"*50 # 申请空间
                pcui_useExcelRead("C:\\Users\\simonlaw\\Desktop\\test\\test.xlsx","Sheet1","B2",getFileName)

        * raise  :   无                
        '''

    def  barCodeCheckRoute(self):
        '''特殊功能没做测试
        开始测试时验证产品状态是否符合测试

        * 参数 : 无

        * 返回
            * >=0:测试成功
            * <0:测试失败

        * 示例 ：

        * raise  :   无
        '''

    def  barCodePassStation(self):
        '''特殊功能没做测试
        提交产品测试结果数据

        * 参数 : 无

        * 返回 
            * >=0:提交成功
            * <0:提交失败

        * 示例 ：


        * raise  :   无
        '''

    def  getStation(self,):
        '''特殊功能没做测试

        获取测试站别代码及名称

        * 参数 : 无

        * 返回 
            * >=0:获取成功
            * <0:获取失败

        * 示例 ：

        * raise  :   无
        '''

    def  getPCIP(self,ip):
        '''特殊功能没做测试
        获取PCIP

        * 参数 
            * *ip:获取到的PCIP(字符串格式)

        * 返回 
            * >=0:获取成功
            * <0:获取失败

        * 示例 ：

        * raise  :   无
        '''

    def  pcui_showCurve(self,curveName,curveColor):
        '''特殊功能没做测试
        显示曲线

        * 参数 
            * *curveName:曲线名(字符串形式)
            * curveColor:曲线颜色

        * 返回 
            * >=0:显示成功
            * <0:显示失败

        * 示例 ：

        * raise  :   无
        '''

    def  pcui_AdjustAGDGParam_Gammaxy(self,sendKey):
        '''√
        计算Gammaxy结果

        * 参数 
            * *sendKey:要计算的集合(同上位机第5页的按键功能一致)

        * 返回 
            * >=0:计算回发成功
            * <0:计算回发失败

        * 示例 ：pcui_AdjustAGDGParam_Gammaxy('Gammaxy.')
                    获取的结果用这个函数：pcui_getKeyValue("Adjusted_Registers")

        * raise  :   无
        '''

    def  pcui_call_pyFunction(self,fun_name,fun_type,value):
        '''特殊功能没做测试
        调用py文件里的函数

        * 参数 
            * *fun_name:py文件里的函数名(字符串格式,示例:py文件名.函数名)
            * *fun_type:函数的返回值类型(字符串格式)
            * *value:函数的返回值

        * 返回 
            * >=0:调用成功
            * <0:调用失败

        * 示例 ：

        * raise  :   无    
        '''

    def  inputFtpUserName(self,name):
        '''特殊功能没做测试
        输入FTP服务器用户名

        * 参数 
            * *name:FTP用户名(字符串格式)

        * 返回 
            * >=0:输入成功
            * <0:输入失败

        * 示例 ：

        * raise  :   无
        '''

    def  inputFtpPassword(self,password):
        '''特殊功能没做测试
        输入FTP服务器密码

        * 参数 
            * *password:FTP密码(字符串格式)

        * 返回 
            * >=0:输入成功
            * <0:输入失败

        * 示例 ：

        * raise  :   无
        '''

    def  inputFtpHost(self,host):
        '''特殊功能没做测试

        输入FTP服务器地址或域名(字符串格式)

        * 参数  
            * host:FTP服务器地址或域名(字符串格式)

        * 返回 
            * >=0:输入成功
            * <0:输入失败

        * 示例 ：

        * raise  :   无
        '''

    def  inputFtpPort(self,host):
        '''特殊功能没做测试

        输入FTP服务器端口

        * 参数 
            * host:FTP服务器端口

        * 返回 
            * >=0:输入成功
            * <0:输入失败

        * 示例 ：

        * raise  :   无
        '''

    def uploadFtpFile(self,ftp_server_file,local_file):
        '''特殊功能没做测试

        上传文件到FTP服务器

        * 参数
            * *ftp_server_file_name:要将本地文件名转发到FTP服务器文件夹下的文件名(字符串格式)
            * *local_file_name:本地文件名(可按照路径指定文件名,字符串格式)

        * 返回 
            * >=0:输入成功
            * <0:输入失败

        * 示例 ：

        * raise  :   无
        '''

    def pcui_getLogname(self,Logname):
        '''特殊功能没做测试

        获取扫码后填入的log名字 如没有填入就获取也是返回<0

        * 参数 
            * *Logname:获取到的log名字(字符串格式)

        * 返回 
            * >=0:获取成功
                    <0:获取失败

        * 示例 ：

        * raise  :   无
        '''

    def AOI_NVM(self,is_on,timeout=2000):
        '''AOI功能

        回传是否执行烧录指令

        * 参数 
            * *is_on: 烧录指令(字符串) 'on' 开始 'off' 结束
            * timeout : 超时

        * 返回 
            * =0:获取成功
            -1:获取失败

        * 示例 :    SHARP_pcui_NVM('on')
                    SHARP_pcui_NVM('off')
        * raise  :   无
        '''

    def AOI_Switch_page(self,page,timeout=2000):
        '''AOI功能

        选择当前工位的第几页

        * 参数 
            page: 0-5
            timeout:超时时间

        * 返回 
            * =0:获取成功
            -1:获取失败

        * 示例 :    SHARP_Switch_page(0)

        * raise  :   无
        '''

    def AOI_PG_State(self,State,timeout=2000):
        '''AOI功能

        设置PG状态

        * 参数 
            State: PG当前状态:0:就绪, 1:ok, 2:ng ,3:忙碌
            timeout:超时时间

        * 返回 
            * =0:获取成功
            -1:获取失败

        * 示例 :    SHARP_PG_State(0)

        * raise  :   无
        '''

    def AOI_PG_CMD(self,CMD,timeout=2000):
        '''AOI功能

        plc写入的指令

        * 参数 
            CMD: 1:PG强制重启 PG响应指令. 0:命令读取成功
            timeout:超时时间

        * 返回 
            * =0:获取成功
            -1:获取失败

        * 示例 :    SHARP_PG_CMD(0)

        * raise  :   无
        '''

    def AOI_PG_instruction(self,CMD,timeout=2000):
        '''AOI功能

        plc写入的指令

        * 参数 
            CMD :1:上料成功, Pc响应指令: 0:就绪.(命令读取成功, 可以写入下一条指令)
            timeout:超时时间

        * 返回 
            * =0:获取成功
            -1:获取失败

        * 示例 :    SHARP_PG_instruction(0)

        * raise  :   无
        '''

